left of '->X' must point to class/struct/union错误是怎么回事啊?

来源:百度知道 编辑:UC知道 时间:2024/06/07 11:16:02
/* example1.c */

#include <stdio.h>
#include <math.h>

#include "emd.h"

float dist(feature_t *F1, feature_t *F2)
{
int dX = F1->X - F2->X, dY = F1->Y - F2->Y, dZ = F1->Z - F2->Z;
return sqrt(dX*dX + dY*dY + dZ*dZ);
}

main()
{
feature_t f1[4] = { {100,40,22}, {211,20,2}, {32,190,150}, {2,100,100} },
f2[3] = { {0,0,0}, {50,100,80}, {255,255,255} };
float w1[5] = { 0.4, 0.3, 0.2, 0.1 },
w2[3] = { 0.5, 0.3, 0.2 };
signature_t s1 = { 4, f1, w1},
s2 = { 3, f2, w2};
float e;

e = emd(&s1, &s2, dist, 0, 0);

printf("emd=%f\n", e);
}
总提示错误,请高手指教要怎么改啊?
头文件中定义了 typedef int feature_t;

当然不能这麼用了
你feature_t只是1个int

除非你的feature_t是一个结构,里面有成员 X

如:
typedef struct
{
int X;
int Y;
int Z;

}feature_t;

feature_t结构或者类你定义多了吗??
报错是说:
'->X'的左面必须是指向结构、类或者联合体的指针。

那就是了。。你的feature_t是int,
一个int指针怎么会有成员X呢。。。